package cn.com.huzo.model.entities.financial;

import huzofw.model.entities.BaseEntity;
import huzofw.model.entities.IAggregateRoot;
import java.io.Serializable;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

/**
 * 款成本实体类
 *
 * @author 吴旭
 */
public class ReportStyleCostEntity extends BaseEntity implements Serializable, IAggregateRoot {

    private static final long serialVersionUID = 5476426643525368653L;
    private String StyleNo;
    private String SupplierName;            // 供应商
    private String MaterialName;            // 材料名
    private String MaterialCode;
    private String Specification;           // 规格(毛幅)
    private String Destination;             // 发货地
    private String UomName;
    private String MaterialColourName;      // 材料色
    private Double FactoryPieceYardage;     // 工厂用量
    private Double UnitPrice;
    private Double StockLevels;             // 库存数
    private Double MrpQuantity;             // 调达数量
    private Double PoQuantity;              // 采购数量
    private Double PoAmount;                // 采购金额
    private Double PayabledQuantity;        // 付款数量(对账单)
    private Double PayabledAmount;          // 付款金额
    private Double DiffQuantity;            // 入库与合同差量
    private Double DiffAmount;              // 入库与合同差额
    private Short RowFlag;                  // 行类型 0-正常行，1-非材料花费，2-附加费

    public String getStyleNo() {
        return StyleNo;
    }

    public void setStyleNo(String StyleNo) {
        this.StyleNo = StyleNo;
    }

    public String getSupplierName() {
        return SupplierName;
    }

    public void setSupplierName(String SupplierName) {
        this.SupplierName = SupplierName;
    }

    public String getMaterialName() {
        return MaterialName;
    }

    public void setMaterialName(String MaterialName) {
        this.MaterialName = MaterialName;
    }

    public String getMaterialCode() {
        return MaterialCode;
    }

    public void setMaterialCode(String MaterialCode) {
        this.MaterialCode = MaterialCode;
    }

    public String getSpecification() {
        return Specification;
    }

    public void setSpecification(String Specification) {
        this.Specification = Specification;
    }

    public String getDestination() {
        return Destination;
    }

    public void setDestination(String Destination) {
        this.Destination = Destination;
    }

    public String getUomName() {
        return UomName;
    }

    public void setUomName(String UomName) {
        this.UomName = UomName;
    }

    public String getMaterialColourName() {
        return MaterialColourName;
    }

    public void setMaterialColourName(String MaterialColourName) {
        this.MaterialColourName = MaterialColourName;
    }

    public Double getFactoryPieceYardage() {
        return FactoryPieceYardage;
    }

    public void setFactoryPieceYardage(Double FactoryPieceYardage) {
        this.FactoryPieceYardage = FactoryPieceYardage;
    }

    public Double getUnitPrice() {
        return UnitPrice;
    }

    public void setUnitPrice(Double UnitPrice) {
        this.UnitPrice = UnitPrice;
    }

    public Double getStockLevels() {
        return StockLevels;
    }

    public void setStockLevels(Double StockLevels) {
        this.StockLevels = StockLevels;
    }

    public Double getMrpQuantity() {
        return MrpQuantity;
    }

    public void setMrpQuantity(Double MrpQuantity) {
        this.MrpQuantity = MrpQuantity;
    }

    public Double getPoQuantity() {
        return PoQuantity;
    }

    public void setPoQuantity(Double PoQuantity) {
        this.PoQuantity = PoQuantity;
    }

    public Double getPoAmount() {
        return PoAmount;
    }

    public void setPoAmount(Double PoAmount) {
        this.PoAmount = PoAmount;
    }

    public Double getPayabledQuantity() {
        return PayabledQuantity;
    }

    public void setPayabledQuantity(Double PayabledQuantity) {
        this.PayabledQuantity = PayabledQuantity;
    }

    public Double getPayabledAmount() {
        return PayabledAmount;
    }

    public void setPayabledAmount(Double PayabledAmount) {
        this.PayabledAmount = PayabledAmount;
    }

    public Double getDiffQuantity() {
        return DiffQuantity;
    }

    public void setDiffQuantity(Double DiffQuantity) {
        this.DiffQuantity = DiffQuantity;
    }

    public Double getDiffAmount() {
        return DiffAmount;
    }

    public void setDiffAmount(Double DiffAmount) {
        this.DiffAmount = DiffAmount;
    }

    public Short getRowFlag() {
        return RowFlag;
    }

    public void setRowFlag(Short RowFlag) {
        this.RowFlag = RowFlag;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof ReportStyleCostEntity)) {
            return false;
        }

        final ReportStyleCostEntity that = (ReportStyleCostEntity) o;

        return new EqualsBuilder()
                .append(this.getStyleNo(), that.getStyleNo())
                .append(this.getSupplierName(), that.getSupplierName())
                .append(this.getMaterialName(), that.getMaterialName())
                .isEquals();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        int result = 17;
        result = 31 * result + getStyleNo().hashCode();
        result = 31 * result + getSupplierName().hashCode();
        result = 31 * result + getMaterialName().hashCode();
        return result;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
